Micron Document
🎖️GitЯра🎖️


Displaying Raw • Download

examples/simple_room_server/UITask.cpp HEAD (0679dbef) Text, 4.54 KB

Tff7b72#Tff7b72include T8b949e"UITask.h"
Tff7b72#Tff7b72include T8b949e<Arduino.h>
Tff7b72#Tff7b72include T8b949e<helpers/CommonCLI.h>

Tff7b72#Tff7b72ifndef USER_BTN_PRESSED
Tff7b72#Tff7b72define USER_BTN_PRESSED LOW
Tff7b72#Tff7b72endif

Tff7b72#Tff7b72define AUTO_OFF_MILLIS 20000 T8b949e// 20 seconds
Tff7b72#Tff7b72define BOOT_SCREEN_MILLIS 4000 T8b949e// 4 seconds

T8b949e// 'meshcore', 128x13px
Tff7b72static Tff7b72const Tffa657uint8_t Te6edf3meshcore_logo Tb4b4b4[Tb4b4b4] Te6edf3PROGMEM Tff7b72= Tb4b4b4{
T79c0ff0x3cTb4b4b4, T79c0ff0x01Tb4b4b4, T79c0ff0xe3Tb4b4b4, T79c0ff0xffTb4b4b4, T79c0ff0xc7Tb4b4b4, T79c0ff0xffTb4b4b4, T79c0ff0x8fTb4b4b4, T79c0ff0x03Tb4b4b4, T79c0ff0x87Tb4b4b4, T79c0ff0xfeTb4b4b4, T79c0ff0x1fTb4b4b4, T79c0ff0xfeTb4b4b4, T79c0ff0x1fTb4b4b4, T79c0ff0xfeTb4b4b4, T79c0ff0x1fTb4b4b4, T79c0ff0xfeTb4b4b4,
T79c0ff0x3cTb4b4b4, T79c0ff0x03Tb4b4b4, T79c0ff0xe3Tb4b4b4, T79c0ff0xffTb4b4b4, T79c0ff0xc7Tb4b4b4, T79c0ff0xffTb4b4b4, T79c0ff0x8eTb4b4b4, T79c0ff0x03Tb4b4b4, T79c0ff0x8fTb4b4b4, T79c0ff0xfeTb4b4b4, T79c0ff0x3fTb4b4b4, T79c0ff0xfeTb4b4b4, T79c0ff0x1fTb4b4b4, T79c0ff0xffTb4b4b4, T79c0ff0x1fTb4b4b4, T79c0ff0xfeTb4b4b4,
T79c0ff0x3eTb4b4b4, T79c0ff0x03Tb4b4b4, T79c0ff0xc3Tb4b4b4, T79c0ff0xffTb4b4b4, T79c0ff0x8fTb4b4b4, T79c0ff0xffTb4b4b4, T79c0ff0x0eTb4b4b4, T79c0ff0x07Tb4b4b4, T79c0ff0x8fTb4b4b4, T79c0ff0xfeTb4b4b4, T79c0ff0x7fTb4b4b4, T79c0ff0xfeTb4b4b4, T79c0ff0x1fTb4b4b4, T79c0ff0xffTb4b4b4, T79c0ff0x1fTb4b4b4, T79c0ff0xfcTb4b4b4,
T79c0ff0x3eTb4b4b4, T79c0ff0x07Tb4b4b4, T79c0ff0xc7Tb4b4b4, T79c0ff0x80Tb4b4b4, T79c0ff0x0eTb4b4b4, T79c0ff0x00Tb4b4b4, T79c0ff0x0eTb4b4b4, T79c0ff0x07Tb4b4b4, T79c0ff0x9eTb4b4b4, T79c0ff0x00Tb4b4b4, T79c0ff0x78Tb4b4b4, T79c0ff0x0eTb4b4b4, T79c0ff0x3cTb4b4b4, T79c0ff0x0fTb4b4b4, T79c0ff0x1cTb4b4b4, T79c0ff0x00Tb4b4b4,
T79c0ff0x3eTb4b4b4, T79c0ff0x0fTb4b4b4, T79c0ff0xc7Tb4b4b4, T79c0ff0x80Tb4b4b4, T79c0ff0x1eTb4b4b4, T79c0ff0x00Tb4b4b4, T79c0ff0x0eTb4b4b4, T79c0ff0x07Tb4b4b4, T79c0ff0x1eTb4b4b4, T79c0ff0x00Tb4b4b4, T79c0ff0x70Tb4b4b4, T79c0ff0x0eTb4b4b4, T79c0ff0x38Tb4b4b4, T79c0ff0x0fTb4b4b4, T79c0ff0x3cTb4b4b4, T79c0ff0x00Tb4b4b4,
T79c0ff0x7fTb4b4b4, T79c0ff0x0fTb4b4b4, T79c0ff0xc7Tb4b4b4, T79c0ff0xfeTb4b4b4, T79c0ff0x1fTb4b4b4, T79c0ff0xfcTb4b4b4, T79c0ff0x1fTb4b4b4, T79c0ff0xffTb4b4b4, T79c0ff0x1cTb4b4b4, T79c0ff0x00Tb4b4b4, T79c0ff0x70Tb4b4b4, T79c0ff0x0eTb4b4b4, T79c0ff0x38Tb4b4b4, T79c0ff0x0eTb4b4b4, T79c0ff0x3fTb4b4b4, T79c0ff0xf8Tb4b4b4,
T79c0ff0x7fTb4b4b4, T79c0ff0x1fTb4b4b4, T79c0ff0xc7Tb4b4b4, T79c0ff0xfeTb4b4b4, T79c0ff0x0fTb4b4b4, T79c0ff0xffTb4b4b4, T79c0ff0x1fTb4b4b4, T79c0ff0xffTb4b4b4, T79c0ff0x1cTb4b4b4, T79c0ff0x00Tb4b4b4, T79c0ff0xf0Tb4b4b4, T79c0ff0x0eTb4b4b4, T79c0ff0x38Tb4b4b4, T79c0ff0x0eTb4b4b4, T79c0ff0x3fTb4b4b4, T79c0ff0xf8Tb4b4b4,
T79c0ff0x7fTb4b4b4, T79c0ff0x3fTb4b4b4, T79c0ff0xc7Tb4b4b4, T79c0ff0xfeTb4b4b4, T79c0ff0x0fTb4b4b4, T79c0ff0xffTb4b4b4, T79c0ff0x1fTb4b4b4, T79c0ff0xffTb4b4b4, T79c0ff0x1cTb4b4b4, T79c0ff0x00Tb4b4b4, T79c0ff0xf0Tb4b4b4, T79c0ff0x1eTb4b4b4, T79c0ff0x3fTb4b4b4, T79c0ff0xfeTb4b4b4, T79c0ff0x3fTb4b4b4, T79c0ff0xf0Tb4b4b4,
T79c0ff0x77Tb4b4b4, T79c0ff0x3bTb4b4b4, T79c0ff0x87Tb4b4b4, T79c0ff0x00Tb4b4b4, T79c0ff0x00Tb4b4b4, T79c0ff0x07Tb4b4b4, T79c0ff0x1cTb4b4b4, T79c0ff0x0fTb4b4b4, T79c0ff0x3cTb4b4b4, T79c0ff0x00Tb4b4b4, T79c0ff0xe0Tb4b4b4, T79c0ff0x1cTb4b4b4, T79c0ff0x7fTb4b4b4, T79c0ff0xfcTb4b4b4, T79c0ff0x38Tb4b4b4, T79c0ff0x00Tb4b4b4,
T79c0ff0x77Tb4b4b4, T79c0ff0xfbTb4b4b4, T79c0ff0x8fTb4b4b4, T79c0ff0x00Tb4b4b4, T79c0ff0x00Tb4b4b4, T79c0ff0x07Tb4b4b4, T79c0ff0x1cTb4b4b4, T79c0ff0x0fTb4b4b4, T79c0ff0x3cTb4b4b4, T79c0ff0x00Tb4b4b4, T79c0ff0xe0Tb4b4b4, T79c0ff0x1cTb4b4b4, T79c0ff0x7fTb4b4b4, T79c0ff0xf8Tb4b4b4, T79c0ff0x38Tb4b4b4, T79c0ff0x00Tb4b4b4,
T79c0ff0x73Tb4b4b4, T79c0ff0xf3Tb4b4b4, T79c0ff0x8fTb4b4b4, T79c0ff0xffTb4b4b4, T79c0ff0x0fTb4b4b4, T79c0ff0xffTb4b4b4, T79c0ff0x1cTb4b4b4, T79c0ff0x0eTb4b4b4, T79c0ff0x3fTb4b4b4, T79c0ff0xf8Tb4b4b4, T79c0ff0xffTb4b4b4, T79c0ff0xfcTb4b4b4, T79c0ff0x70Tb4b4b4, T79c0ff0x78Tb4b4b4, T79c0ff0x7fTb4b4b4, T79c0ff0xf8Tb4b4b4,
T79c0ff0xe3Tb4b4b4, T79c0ff0xe3Tb4b4b4, T79c0ff0x8fTb4b4b4, T79c0ff0xffTb4b4b4, T79c0ff0x1fTb4b4b4, T79c0ff0xfeTb4b4b4, T79c0ff0x3cTb4b4b4, T79c0ff0x0eTb4b4b4, T79c0ff0x3fTb4b4b4, T79c0ff0xf8Tb4b4b4, T79c0ff0xffTb4b4b4, T79c0ff0xfcTb4b4b4, T79c0ff0x70Tb4b4b4, T79c0ff0x3cTb4b4b4, T79c0ff0x7fTb4b4b4, T79c0ff0xf8Tb4b4b4,
T79c0ff0xe3Tb4b4b4, T79c0ff0xe3Tb4b4b4, T79c0ff0x8fTb4b4b4, T79c0ff0xffTb4b4b4, T79c0ff0x1fTb4b4b4, T79c0ff0xfcTb4b4b4, T79c0ff0x3cTb4b4b4, T79c0ff0x0eTb4b4b4, T79c0ff0x1fTb4b4b4, T79c0ff0xf8Tb4b4b4, T79c0ff0xffTb4b4b4, T79c0ff0xf8Tb4b4b4, T79c0ff0x70Tb4b4b4, T79c0ff0x3cTb4b4b4, T79c0ff0x7fTb4b4b4, T79c0ff0xf8Tb4b4b4,
Tb4b4b4}Tb4b4b4;

Tffa657void Td2a8ffUITask::beginTb4b4b4(Te6edf3NodePrefsTff7b72* Te6edf3node_prefsTb4b4b4, Tff7b72const Tffa657charTff7b72* Te6edf3build_dateTb4b4b4, Tff7b72const Tffa657charTff7b72* Te6edf3firmware_versionTb4b4b4) Tb4b4b4{
Te6edf3_prevBtnState Tff7b72= Te6edf3HIGHTb4b4b4;
Te6edf3_auto_off Tff7b72= Te6edf3millisTb4b4b4(Tb4b4b4) Tff7b72+ Te6edf3AUTO_OFF_MILLISTb4b4b4;
Te6edf3_node_prefs Tff7b72= Te6edf3node_prefsTb4b4b4;
Te6edf3_displayTff7b72-Tff7b72>Te6edf3turnOnTb4b4b4(Tb4b4b4)Tb4b4b4;

T8b949e// strip off dash and commit hash by changing dash to null terminator
T8b949e// e.g: v1.2.3-abcdef -> v1.2.3
Tffa657char Tff7b72*Te6edf3version Tff7b72= Te6edf3strdupTb4b4b4(Te6edf3firmware_versionTb4b4b4)Tb4b4b4;
Tffa657char Tff7b72*Te6edf3dash Tff7b72= Te6edf3strchrTb4b4b4(Te6edf3versionTb4b4b4, Ta5d6ff'Ta5d6ff-Ta5d6ff'Tb4b4b4)Tb4b4b4;
Tff7b72ifTb4b4b4(Te6edf3dashTb4b4b4)Tb4b4b4{
Tff7b72*Te6edf3dash Tff7b72= T79c0ff0Tb4b4b4;
Tb4b4b4}

T8b949e// v1.2.3 (1 Jan 2025)
Te6edf3snprintfTb4b4b4(Te6edf3_version_infoTb4b4b4, Tff7b72sizeofTb4b4b4(Te6edf3_version_infoTb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ff%s (%s)Ta5d6ff"Tb4b4b4, Te6edf3versionTb4b4b4, Te6edf3build_dateTb4b4b4)Tb4b4b4;
Te6edf3freeTb4b4b4(Te6edf3versionTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffUITask::renderCurrScreenTb4b4b4(Tb4b4b4) Tb4b4b4{
Tffa657char Te6edf3tmpTb4b4b4[T79c0ff80Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3millisTb4b4b4(Tb4b4b4) Tff7b72< Te6edf3BOOT_SCREEN_MILLISTb4b4b4) Tb4b4b4{ T8b949e// boot screen
T8b949e// meshcore logo
Te6edf3_displayTff7b72-Tff7b72>Te6edf3setColorTb4b4b4(Te6edf3UIColorTff7b72:Tff7b72:Te6edf3corp_blueTb4b4b4)Tb4b4b4;
Tffa657int Te6edf3logoWidth Tff7b72= T79c0ff128Tb4b4b4;
Te6edf3_displayTff7b72-Tff7b72>Te6edf3drawXbmTb4b4b4(Tb4b4b4(Te6edf3_displayTff7b72-Tff7b72>Te6edf3widthTb4b4b4(Tb4b4b4) Tff7b72- Te6edf3logoWidthTb4b4b4) Tff7b72/ T79c0ff2Tb4b4b4, T79c0ff3Tb4b4b4, Te6edf3meshcore_logoTb4b4b4, Te6edf3logoWidthTb4b4b4, T79c0ff13Tb4b4b4)Tb4b4b4;

T8b949e// meshcore website
Tff7b72const Tffa657charTff7b72* Te6edf3website Tff7b72= Ta5d6ff"Ta5d6ffhttps://meshcore.ioTa5d6ff"Tb4b4b4;
Te6edf3_displayTff7b72-Tff7b72>Te6edf3setColorTb4b4b4(Te6edf3UIColorTff7b72:Tff7b72:Te6edf3primary_txtTb4b4b4)Tb4b4b4;
Te6edf3_displayTff7b72-Tff7b72>Te6edf3setTextSizeTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4;
Tffa657uint16_t Te6edf3websiteWidth Tff7b72= Te6edf3_displayTff7b72-Tff7b72>Te6edf3getTextWidthTb4b4b4(Te6edf3websiteTb4b4b4)Tb4b4b4;
Te6edf3_displayTff7b72-Tff7b72>Te6edf3setCursorTb4b4b4(Tb4b4b4(Te6edf3_displayTff7b72-Tff7b72>Te6edf3widthTb4b4b4(Tb4b4b4) Tff7b72- Te6edf3websiteWidthTb4b4b4) Tff7b72/ T79c0ff2Tb4b4b4, T79c0ff22Tb4b4b4)Tb4b4b4;
Te6edf3_displayTff7b72-Tff7b72>Te6edf3printTb4b4b4(Te6edf3websiteTb4b4b4)Tb4b4b4;

T8b949e// version info
Te6edf3_displayTff7b72-Tff7b72>Te6edf3setTextSizeTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4;
Tffa657uint16_t Te6edf3versionWidth Tff7b72= Te6edf3_displayTff7b72-Tff7b72>Te6edf3getTextWidthTb4b4b4(Te6edf3_version_infoTb4b4b4)Tb4b4b4;
Te6edf3_displayTff7b72-Tff7b72>Te6edf3setCursorTb4b4b4(Tb4b4b4(Te6edf3_displayTff7b72-Tff7b72>Te6edf3widthTb4b4b4(Tb4b4b4) Tff7b72- Te6edf3versionWidthTb4b4b4) Tff7b72/ T79c0ff2Tb4b4b4, T79c0ff35Tb4b4b4)Tb4b4b4;
Te6edf3_displayTff7b72-Tff7b72>Te6edf3printTb4b4b4(Te6edf3_version_infoTb4b4b4)Tb4b4b4;

T8b949e// node type
Tff7b72const Tffa657charTff7b72* Te6edf3node_type Tff7b72= Ta5d6ff"Ta5d6ff< Room Server >Ta5d6ff"Tb4b4b4;
Tffa657uint16_t Te6edf3typeWidth Tff7b72= Te6edf3_displayTff7b72-Tff7b72>Te6edf3getTextWidthTb4b4b4(Te6edf3node_typeTb4b4b4)Tb4b4b4;
Te6edf3_displayTff7b72-Tff7b72>Te6edf3setCursorTb4b4b4(Tb4b4b4(Te6edf3_displayTff7b72-Tff7b72>Te6edf3widthTb4b4b4(Tb4b4b4) Tff7b72- Te6edf3typeWidthTb4b4b4) Tff7b72/ T79c0ff2Tb4b4b4, T79c0ff48Tb4b4b4)Tb4b4b4;
Te6edf3_displayTff7b72-Tff7b72>Te6edf3printTb4b4b4(Te6edf3node_typeTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{ T8b949e// home screen
T8b949e// node name
Te6edf3_displayTff7b72-Tff7b72>Te6edf3setCursorTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4)Tb4b4b4;
Te6edf3_displayTff7b72-Tff7b72>Te6edf3setTextSizeTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4;
Te6edf3_displayTff7b72-Tff7b72>Te6edf3setColorTb4b4b4(Te6edf3UIColorTff7b72:Tff7b72:Te6edf3primary_txtTb4b4b4)Tb4b4b4;
Te6edf3_displayTff7b72-Tff7b72>Te6edf3printTb4b4b4(Te6edf3_node_prefsTff7b72-Tff7b72>Te6edf3node_nameTb4b4b4)Tb4b4b4;

T8b949e// freq / sf
Te6edf3_displayTff7b72-Tff7b72>Te6edf3setCursorTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff20Tb4b4b4)Tb4b4b4;
Te6edf3sprintfTb4b4b4(Te6edf3tmpTb4b4b4, Ta5d6ff"Ta5d6ffFREQ: %06.3f SF%dTa5d6ff"Tb4b4b4, Te6edf3_node_prefsTff7b72-Tff7b72>Te6edf3freqTb4b4b4, Te6edf3_node_prefsTff7b72-Tff7b72>Te6edf3sfTb4b4b4)Tb4b4b4;
Te6edf3_displayTff7b72-Tff7b72>Te6edf3printTb4b4b4(Te6edf3tmpTb4b4b4)Tb4b4b4;

T8b949e// bw / cr
Te6edf3_displayTff7b72-Tff7b72>Te6edf3setCursorTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff30Tb4b4b4)Tb4b4b4;
Te6edf3sprintfTb4b4b4(Te6edf3tmpTb4b4b4, Ta5d6ff"Ta5d6ffBW: %03.2f CR: %dTa5d6ff"Tb4b4b4, Te6edf3_node_prefsTff7b72-Tff7b72>Te6edf3bwTb4b4b4, Te6edf3_node_prefsTff7b72-Tff7b72>Te6edf3crTb4b4b4)Tb4b4b4;
Te6edf3_displayTff7b72-Tff7b72>Te6edf3printTb4b4b4(Te6edf3tmpTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tffa657void Td2a8ffUITask::loopTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72#Tff7b72ifdef PIN_USER_BTN
Tff7b72if Tb4b4b4(Te6edf3millisTb4b4b4(Tb4b4b4) Tff7b72>Tff7b72= Te6edf3_next_readTb4b4b4) Tb4b4b4{
Tffa657int Te6edf3btnState Tff7b72= Te6edf3digitalReadTb4b4b4(Te6edf3PIN_USER_BTNTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3btnState Tff7b72!Tff7b72= Te6edf3_prevBtnStateTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3btnState Tff7b72=Tff7b72= Te6edf3USER_BTN_PRESSEDTb4b4b4) Tb4b4b4{ T8b949e// pressed?
Tff7b72if Tb4b4b4(Te6edf3_displayTff7b72-Tff7b72>Te6edf3isOnTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
T8b949e// TODO: any action ?
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3_displayTff7b72-Tff7b72>Te6edf3turnOnTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3_auto_off Tff7b72= Te6edf3millisTb4b4b4(Tb4b4b4) Tff7b72+ Te6edf3AUTO_OFF_MILLISTb4b4b4; T8b949e// extend auto-off timer
Tb4b4b4}
Te6edf3_prevBtnState Tff7b72= Te6edf3btnStateTb4b4b4;
Tb4b4b4}
Te6edf3_next_read Tff7b72= Te6edf3millisTb4b4b4(Tb4b4b4) Tff7b72+ T79c0ff200Tb4b4b4; T8b949e// 5 reads per second
Tb4b4b4}
Tff7b72#Tff7b72endif

Tff7b72if Tb4b4b4(Te6edf3_displayTff7b72-Tff7b72>Te6edf3isOnTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3millisTb4b4b4(Tb4b4b4) Tff7b72>Tff7b72= Te6edf3_next_refreshTb4b4b4) Tb4b4b4{
Te6edf3_displayTff7b72-Tff7b72>Te6edf3startFrameTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3renderCurrScreenTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3_displayTff7b72-Tff7b72>Te6edf3endFrameTb4b4b4(Tb4b4b4)Tb4b4b4;

Te6edf3_next_refresh Tff7b72= Te6edf3millisTb4b4b4(Tb4b4b4) Tff7b72+ T79c0ff1000Tb4b4b4; T8b949e// refresh every second
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3millisTb4b4b4(Tb4b4b4) Tff7b72> Te6edf3_auto_offTb4b4b4) Tb4b4b4{
Te6edf3_displayTff7b72-Tff7b72>Te6edf3turnOffTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Served by rngit 1.5.0 - Generated in 0.15s